#ifndef GY_LINEEDITDELEGATE_H
#define GY_LINEEDITDELEGATE_H

#include "GY_ControlLibrary_global.h"
#include <QItemDelegate>
#include <QLineEdit>


/**
 * @brief The LineEditDelegate class
 * LineEdit委托类
 */
class GY_CONTROLLIBRARY_EXPORT GY_LineEditDelegate : public QItemDelegate
{
    Q_OBJECT
public:
    GY_LineEditDelegate(QObject *parent = nullptr);

    /**
     * @brief setRegExpValidator 设置成正则表达式型（可文字）
     * @param row 行
     * @param column 列
     * @param rx 文字类型
     */
    void setIndexRegExpValidator(const int row, const int column,const QString &rx=nullptr);

    //-----------------------------------------------重写函数--------------------------------------------------
    /**
     * @brief createEditor 创建下拉框控件
     * @param parent 父对象
     * @param option 位置
     * @param index 索引
     * @return
     */
    QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;
    /**
     * @brief setEditorData 编辑的时候设置数据到上面的editor中
     * @param editor 控件
     * @param index 索引
     */
    void setEditorData(QWidget *editor, const QModelIndex &index) const;
    /**
     * @brief setModelData 编辑完成，保存数据到data
     * @param editor 控件
     * @param model 模型
     * @param index 索引
     */
    void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;
    /**
     * @brief updateEditorGeometry 设置控件的位置和大小，样式等
     * @param editor 控件
     * @param option 位置
     * @param index 索引
     */
    void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const  QModelIndex &index) const;

private:
    QMap<int,int> m_index; //记录行列
    QMap<int,QString> m_indexRegExp; //记录文字类型
    int m_floatNum; //小数点位数
};

#endif // GY_LINEEDITDELEGATE_H
